package com.major.algorithm.divideandconquer;

public class HanoiTower {

    public static void hanoiTower(int num) {
        hanoiTower(num, 'A', 'B', 'C');
    }

    public static void hanoiTower(int num, char start, char helper, char dest) {
        if (num == 1) {
            System.out.println(start + " --> " + dest);
        } else {
            // 上面的所有移动到 helper . 让dest作为helper
            hanoiTower(num - 1, start, dest, helper);
            // 最下面的移动到 dest。相对的最下面，移动到相对的 dest
            System.out.println(start + " --> " + dest);

            // 最下面的移动到dest之后，重新开始移动
            hanoiTower(num - 1, helper, start, dest);
        }
    }

}
